\subsection{Software Architecture and Project Management}
To achieve high efficiency during a software project with the size of six persons usually a lot of planning and coordination is needed. Therefore, this project was hosted on the googlecode.com website which provides an excellent framework for concurrent team development. It offers a code repository with the Subversion (SVN) version control system and bugtracker. All services offered by Google Code are free of charge.

During the project there were weekly briefings to elaborate new tasks. Every task was written down as a ticket in the bug tracker to provide a pool of tasks which is accessible by all team members. Everyone who finished his actual task can immediately pick another task without needing further synchronization with other team members since the tasks were discussed and described during the weekly meetings. 

To ensure high code quality in terms of stability and robustness against changes test-driven development was used. Before working on the actual feature a unit test for this feature was written. This guarantees the correct functioning of this feature on the one hand and speeds up future tests if changes regarding this feature were made on the other hand. Also a test suite was developed which can be used to automatically test the whole codebase. 

Another useful feature that Google Code offers are code reviews of existing commits. This was used in addition with a "definition of done`` that states a task done if there is a unittest and another team member has reviewed the code for this task. The reviewer can see errors in the implementation and give additional hints how to implement things more efficient or cleaner in the sense of reusability. This results in clean, reusable and stable code which is known by at least two members of the team; therefore, this guarantees a higher chance that every time a member is available who understands a particular part of the code. Another advantage is the peer pressure, i.e. if somebody knows that his code will be reviewed and has to be understood by other members, he tries to write clean and understandable code in the first place.    
